1. The Field of the Invention
The present invention relates to network communication technologies and, more specifically, to mechanisms that allow IPv4 client to communicate over an IPv6 network with reduced server workload.
2. Background and Related Art
Computer networks allow computers and potentially any associated users to communicate electronically throughout the globe over a worldwide amalgamation of networks often referred to as “the Internet”. A common network protocol used to communicate over the Internet is called the Internet Protocol or “IP” for short. There are a number of different versions of the IP protocol including the common IP version 4 (herein also referred to as “IPv4”) and the more recent IP version 6 (herein also referred to as “IPv6”).
In order for one computing system to communicate with another computing system over a particular network, it is important that each computing system be uniquely identified on that network. IPv4 provides a 32 bit addressing mechanism, which should allow for 232 or approximately 4 billion different addresses. Practical considerations limit the number of IPv4 addresses to approximately 2 or 3 billion. While this may seem like an unlimited supply of addresses, the proliferation of the Internet and network devices throughout the globe have pushed or exceeded these address limits.
As IPv4 addresses have become scarcer, systems called “Network Address Translators” or “NATs” have been developed. A NAT separates out a number of computing systems in a private network from the rest of the Internet. All computing systems on the Internet that are not in such a private network are required to have a unique IP address that is unique as compared to all other Internet-connected computing systems that are also not behind a NAT. However, all of the computing systems in the private network have an address that is unique to that private network, but not necessarily to the global Internet. The NAT then translates that private address into a globally unique IP address on the fly as each packet exits the private network through the NAT and into the global Internet.
Accordingly, the NAT uses a limited number (potentially even one) globally unique address that it exposes to the Internet, while allowing the network devices that are behind the NAT to have a larger number of private network addresses that need not be globally unique throughout the Internet. The use of NATs therefore allows for a short term solution to the problem of there being a relatively limited number of IPv4 addresses available. Accordingly, IPv4 computing systems and NATs often work together.
IPv6, on the other hand, has a 128 bit addressing mechanism, which is sufficient to provide unique addresses for well into the anticipated future. Accordingly, the problem associated with a limited number of unique addresses under IPv4 may be addressed by reconfiguring the Internet to operate exclusively under IPv6 instead. Such a reconfiguration is not practical for the time being as there are significant investments in the Internet that are based on the IPv4 protocol. Furthermore, the Internet is not in the control of any one entity. Getting everyone to agree to reconfigure at some expense to exclusive IPv6 would be difficult, if not impossible, to arrange as anything but a long terminal solution. Accordingly, it is commonly accepted that the Internet needs to concurrently work with both IPv6 and IPv4, at least for the near future. In order to facilitate robust communication over the Internet, mechanisms have been developed that allow for IPv4 computing systems to communicate with IPv6 computing systems.
One mechanism often referred to as the “6to4” mechanism uses IPv6 packets as payload of IPv4 packets. When transitioning from an IPv4 network to an IPv6 network, the IPv6 packet is extracted and transmitted. When transitioning from an IPv6 network to an IPv4 network, the IPv6 packet is including as the payload of an IPv4 packet, and then the IPv4 packet is transmitted. Several problems exist with this 6to4 mechanism. Specifically, it does not work well when the IPv4 computing system that is to communicate is behind a NAT. NATs are typically not programmed to allow the transmission of arbitrary payload types. Accordingly, NATs may not permit communication of a payload in the form of an IPv6 packet. Even when the NAT permits such communication, the local address within the private network cannot be used in a 6to4 scheme. The 6to4 mechanism will work with a NAT if the NAT and 6to4 router are in the same physical box. However, there are many cases in which the NAT may not be easily upgradeable to include a 6to4 routing function.
In addition, in peer-to-peer communications that occur, for example, in the video game industry, it may be that each peer (e.g., a first and second peer) is located behind a different NAT (e.g., a first and second peer, respectively). Since the private network address that each peer has need not be globally unique, it is possible that the first peer may have the same private address as a computing system behind the second NAT. Accordingly, any communication from the second peer to the first peer would be kicked back to the computing system that has the same address as the first NAT, but that is behind the second NAT. Accordingly, communication is frustrated.
One conventional way to solve this latter problem is to have each peer use a specific port in uniquely identifying each of the peers. In order for a first peer to first communicate with the second peer, the first peers constructs a message and uses its IP address as the source IP address, and then assigns a source port. The message is then sent to a third party server on the Internet. The source IP address and port are translated by the first NAT while the message is outbound to the server. The first NAT maintains the original mapping between the private IP address and port and the public IP address and port. The server also acquires knowledge of the IP address and port that may be used to communicate with the peer. The second peer does the same thing. Accordingly, both peers may learn how to communicate directly with the other peer, and then direct User Datagram Protocol-based communication may occur. However, this technology does not always works when a NAT is configured to not send messages to a peer that it has no previous knowledge of.
Accordingly, what are desired are mechanisms that allow IPv4 computing systems to communicate with IPv6 computing systems even when the IPv4 computing system is behind a NAT, and that allow IPv4 computing systems being NATs to communicate directly with other IPv4 computing systems that are also behind NATs.